package com.example.backend.dto;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.example.backend.annotation.constraint.NullableZeroOne;
import com.example.backend.annotation.constraint.ValidPhone;
import com.example.backend.annotation.constraint.ValidUserId;
import com.example.backend.annotation.constraint.ValideDecimal102;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;

@Data
public class DtsOrderInsertDto {
    /**
     * 订单商品ID
     */
    @NotNull(message = "订单商品ID不能为空")
    private Integer id;
    /**
     * 用户表的用户ID
     */
    @ValidUserId
    @NotNull(message = "用户ID不能为空")
    private Integer userId;
    /**
     * 订单编号
     */
    private String orderSn;
    /**
     * 支付类型（0.余额支付  1.微信支付）
     */
    @NullableZeroOne
    private Integer payType;
    /**
     * 订单状态
     */
    private Integer orderStatus;
    /**
     * 收货人名称
     */
    @NotNull(message = "收货人名称不能为空")
    private String consignee;
    /**
     * 收货人手机号
     */
    @ValidPhone
    private String mobile;
    /**
     * 收货具体地址
     */
    @NotNull(message = "收货具体地址不能为空")
    private String address;
    /**
     * 用户订单留言
     */
    private String message;
    /**
     * 商品总费用
     */
    @ValideDecimal102
    private BigDecimal goodsPrice;
    /**
     * 配送费用
     */
    @ValideDecimal102
    private BigDecimal freightPrice;
    /**
     * 订单费用， = goods_price + freight_price - coupon_price
     */
    @ValideDecimal102
    private BigDecimal orderPrice;
    /**
     * 实付费用， = order_price - integral_price
     */
    @ValideDecimal102
    private BigDecimal actualPrice;
    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private Date addTime;
    /**
     * 配送方式 ：0 快递, 1 自提
     */
    @NullableZeroOne
    private Integer freightType;
}
